import storage from '@/utils/storage'
import { getRect } from '@/uni_modules/wot-design-uni/components/common/util'
import { api_get_token, api_get_myInfo } from '@/api/modules/login.js'
//获取当前页面路由信息
export const getCurrPages = () => {
	let pages = getCurrentPages();
	let currentPage = pages[pages.length - 1];
	return currentPage
}

// 判断是否是tabbar页
// export const isTabbarPage = (path) => {
// 	let arr = useTabbarStore().list.map(d => d.pagePath)
// 	if (arr.includes(path)) {
// 		return true
// 	} else {
// 		return false
// 	}
// }

// 跳转页面
export const toPage = (path, isTabbar = false) => {
	if (isTabbar == true) {
		uni.redirectTo({
			url: path
		})
	} else {
		uni.navigateTo({
			url: path
		})
	}
}

// 返回页面
export const goBack = (num = 1, callBack) => {
	uni.navigateBack({
		delta: num,
		success: () => {
			callBack && callBack()
		}
	})
}

// 获取具体某个月的天数
export const getMonthDay = (year, month) => {
	return new Date(year, month, 0).getDate()
}

export const getDomInfo = (dom, callBack) => {
	getRect(dom, false).then((rect) => {
		callBack && callBack(rect)
	})
}

// 节流函数
export const throttle = (fn, time = 500) => {
	let timerId_1 = null;
	return function(...args) {
		if (!timerId_1) {
			fn.apply(this, args);
			timerId_1 = setTimeout(() => {
				timerId_1 = null
			}, time);
		}
	};
}


/**
 * @param {*} fn 要执行的函数
 * @param {*} delay 延迟时间
 * @returns
 */
export const debounce = (fn, delay = 500, immediate = false) => {
	// 1.定义一个定时器, 保存上一次的定时器
	let timer = null;
	let isInvoke = false; //记录立即执行是否已执行过

	// 2.真正执行的函数
	const _debounce = function(...args) {
		// 取消上一次的定时器
		if (timer) clearTimeout(timer)
		// 判断是否需要立即执行
		if (immediate && !isInvoke) {
			fn.apply(this, args);
			isInvoke = true;
		} else {
			// 延迟执行
			timer = setTimeout(() => {
				// 外部传入的真正要执行的函数
				fn();

				//没有这个步骤时，只有第一次输入是立即执行，即使后面延迟执行后再输入也是延迟执行；
				// 有这个步骤时，第一次输入时立即执行，后面延迟执行后再输入也会有立即执行
				isInvoke = false
				timer = null
			}, delay);
		}
	}

	return _debounce
}